/*******************************************************************************
 * Copyright 2011 See AUTHORS file.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package info.u250.c2d.graphic;

import com.badlogic.gdx.graphics.Color;

/**
 * <p>An enumeration of the WebColors according to http://en.wikipedia.org/wiki/Web_colors#X11_color_names.<br/>
 * The colors are also partitioned into PINK_COLORS, RED_COLORS, etc.</p>
 *
 * @author BLinK3rO
 * @author Centril<twingoow @ gmail.com> / Mazdak Farrokhzad.
 * @version 1.0
 */
public enum WebColors {
    // Pink colors.
    PINK(new Color(1f, 0.752941176470588f, 0.796078431372549f, 1f)),
    LIGHT_PINK(new Color(1f, 0.713725490196078f, 0.756862745098039f, 1f)),
    HOT_PINK(new Color(1f, 0.411764705882353f, 0.705882352941176f, 1f)),
    DEEP_PINK(new Color(1f, 0.0784313725490196f, 0.576470588235294f, 1f)),
    PALE_VIOLET_RED(new Color(0.858823529411765f, 0.43921568627451f, 0.576470588235294f, 1f)),
    MEDIUM_VIOLET_RED(new Color(0.780392156862745f, 0.0823529411764706f, 0.52156862745098f, 1f)),

    // Red colors.
    LIGHT_SALMON(new Color(1f, 0.627450980392157f, 0.47843137254902f, 1f)),
    SALMON(new Color(0.980392156862745f, 0.501960784313726f, 0.447058823529412f, 1f)),
    DARK_SALMON(new Color(0.913725490196078f, 0.588235294117647f, 0.47843137254902f, 1f)),
    LIGHT_CORAL(new Color(0.941176470588235f, 0.501960784313726f, 0.501960784313726f, 1f)),
    INDIAN_RED(new Color(0.803921568627451f, 0.36078431372549f, 0.36078431372549f, 1f)),
    CRIMSON(new Color(0.862745098039216f, 0.0784313725490196f, 0.235294117647059f, 1f)),
    FIRE_BRICK(new Color(0.698039215686274f, 0.133333333333333f, 0.133333333333333f, 1f)),
    DARK_RED(new Color(0.545098039215686f, 0f, 0f, 1f)),
    RED(Color.RED),

    // Orange colors.
    ORANGE_RED(new Color(1f, 0.270588235294118f, 0f, 1f)),
    TOMATO(new Color(1f, 0.388235294117647f, 0.27843137254902f, 1f)),
    CORAL(new Color(1f, 0.498039215686275f, 0.313725490196078f, 1f)),
    DARK_ORANGE(new Color(1f, 0.549019607843137f, 0f, 1f)),
    ORANGE(new Color(1f, 0.647058823529412f, 0f, 1f)),
    GOLD(new Color(1f, 0.843137254901961f, 0f, 1f)),

    // Yellow colors.
    YELLOW(Color.YELLOW),
    LIGHT_YELLOW(new Color(1f, 1f, 0.87843137254902f, 1f)),
    LEMON_CHIFFON(new Color(1f, 0.980392156862745f, 0.803921568627451f, 1f)),
    LIGHT_GOLDENROD_YELLOW(new Color(0.980392156862745f, 0.980392156862745f, 0.823529411764706f, 1f)),
    PAPAYA_WHIP(new Color(1f, 0.937254901960784f, 0.835294117647059f, 1f)),
    MOCCASIN(new Color(1f, 0.894117647058824f, 0.709803921568627f, 1f)), PEACH_PUFF(new Color(1f, 0.854901960784314f, 0.725490196078431f, 1f)),
    PALE_GOLDENROD(new Color(0.933333333333333f, 0.909803921568627f, 0.666666666666667f, 1f)),
    KHAKI(new Color(0.941176470588235f, 0.901960784313726f, 0.549019607843137f, 1f)),
    DARK_KHAKI(new Color(0.741176470588235f, 0.717647058823529f, 0.419607843137255f, 1f)),

    // Brown colors.
    CORNSILK(new Color(1f, 0.972549019607843f, 0.862745098039216f, 1f)),
    BLANCHED_ALMOND(new Color(1f, 0.92156862745098f, 0.803921568627451f, 1f)),
    BISQUE(new Color(1f, 0.894117647058824f, 0.768627450980392f, 1f)),
    NAVAJO_WHITE(new Color(1f, 0.870588235294118f, 0.67843137254902f, 1f)),
    WHEAT(new Color(0.96078431372549f, 0.870588235294118f, 0.701960784313725f, 1f)),
    BURLY_WOOD(new Color(0.870588235294118f, 0.72156862745098f, 0.529411764705882f, 1f)),
    TAN(new Color(0.823529411764706f, 0.705882352941176f, 0.549019607843137f, 1f)),
    ROSY_BROWN(new Color(0.737254901960784f, 0.56078431372549f, 0.56078431372549f, 1f)),
    SANDY_BROWN(new Color(0.956862745098039f, 0.643137254901961f, 0.376470588235294f, 1f)),
    GOLDENROD(new Color(0.854901960784314f, 0.647058823529412f, 0.125490196078431f, 1f)),
    DARK_GOLDENROD(new Color(0.72156862745098f, 0.525490196078431f, 0.0431372549019608f, 1f)),
    PERU(new Color(0.803921568627451f, 0.52156862745098f, 0.247058823529412f, 1f)),
    CHOCOLATE(new Color(0.823529411764706f, 0.411764705882353f, 0.117647058823529f, 1f)),
    SADDLE_BROWN(new Color(0.545098039215686f, 0.270588235294118f, 0.0745098039215686f, 1f)),
    SIENNA(new Color(0.627450980392157f, 0.32156862745098f, 0.176470588235294f, 1f)),
    BROWN(new Color(0.647058823529412f, 0.164705882352941f, 0.164705882352941f, 1f)),
    MAROON(new Color(0.501960784313726f, 0f, 0f, 1f)),

    // Green colors.
    DARK_OLIVE_GREEN(new Color(0.333333333333333f, 0.419607843137255f, 0.184313725490196f, 1f)),
    OLIVE(new Color(0.501960784313726f, 0.501960784313726f, 0f, 1f)),
    OLIVE_DRAB(new Color(0.419607843137255f, 0.556862745098039f, 0.137254901960784f, 1f)),
    YELLOW_GREEN(new Color(0.603921568627451f, 0.803921568627451f, 0.196078431372549f, 1f)),
    LIME_GREEN(new Color(0.196078431372549f, 0.803921568627451f, 0.196078431372549f, 1f)),
    LIME(Color.GREEN),
    LAWN_GREEN(new Color(0.486274509803922f, 0.988235294117647f, 0f, 1f)),
    CHARTREUSE(new Color(0.498039215686275f, 1f, 0f, 1f)),
    GREEN_YELLOW(new Color(0.67843137254902f, 1f, 0.184313725490196f, 1f)),
    SPRING_GREEN(new Color(0f, 1f, 0.498039215686275f, 1f)),
    MEDIUM_SPRING_GREEN(new Color(0f, 0.980392156862745f, 0.603921568627451f, 1f)),
    LIGHT_GREEN(new Color(0.564705882352941f, 0.933333333333333f, 0.564705882352941f, 1f)),
    PALE_GREEN(new Color(0.596078431372549f, 0.984313725490196f, 0.596078431372549f, 1f)),
    DARK_SEA_GREEN(new Color(0.56078431372549f, 0.737254901960784f, 0.56078431372549f, 1f)),
    MEDIUM_SEA_GREEN(new Color(0.235294117647059f, 0.701960784313725f, 0.443137254901961f, 1f)),
    SEA_GREEN(new Color(0.180392156862745f, 0.545098039215686f, 0.341176470588235f, 1f)),
    FOREST_GREEN(new Color(0.133333333333333f, 0.545098039215686f, 0.133333333333333f, 1f)),
    GREEN(new Color(0f, 0.501960784313726f, 0f, 1f)),
    DARK_GREEN(new Color(0f, 0.392156862745098f, 0f, 1f)),

    // Cyan colors.
    MEDIUM_AQUAMARINE(new Color(0.4f, 0.803921568627451f, 0.666666666666667f, 1f)),
    AQUA(Color.CYAN),
    CYAN(Color.CYAN),
    LIGHT_CYAN(new Color(0.87843137254902f, 1f, 1f, 1f)),
    PALE_TURQUOISE(new Color(0.686274509803922f, 0.933333333333333f, 0.933333333333333f, 1f)),
    AQUAMARINE(new Color(0.498039215686275f, 1f, 0.831372549019608f, 1f)),
    TURQUOISE(new Color(0.250980392156863f, 0.87843137254902f, 0.815686274509804f, 1f)),
    MEDIUM_TURQUOISE(new Color(0.282352941176471f, 0.819607843137255f, 0.8f, 1f)),
    DARK_TURQUOISE(new Color(0f, 0.807843137254902f, 0.819607843137255f, 1f)),
    LIGHT_SEA_GREEN(new Color(0.125490196078431f, 0.698039215686274f, 0.666666666666667f, 1f)),
    CADET_BLUE(new Color(0.372549019607843f, 0.619607843137255f, 0.627450980392157f, 1f)),
    DARK_CYAN(new Color(0f, 0.545098039215686f, 0.545098039215686f, 1f)),
    TEAL(new Color(0f, 0.501960784313726f, 0.501960784313726f, 1f)),

    // Blue colors.
    LIGHT_STEEL_BLUE(new Color(0.690196078431373f, 0.768627450980392f, 0.870588235294118f, 1f)),
    POWDER_BLUE(new Color(0.690196078431373f, 0.87843137254902f, 0.901960784313726f, 1f)),
    LIGHT_BLUE(new Color(0.67843137254902f, 0.847058823529412f, 0.901960784313726f, 1f)),
    SKY_BLUE(new Color(0.529411764705882f, 0.807843137254902f, 0.92156862745098f, 1f)),
    LIGHT_SKY_BLUE(new Color(0.529411764705882f, 0.807843137254902f, 0.980392156862745f, 1f)),
    DEEP_SKY_BLUE(new Color(0f, 0.749019607843137f, 1f, 1f)),
    DODGER_BLUE(new Color(0.117647058823529f, 0.564705882352941f, 1f, 1f)),
    CORNFLOWER_BLUE(new Color(0.392156862745098f, 0.584313725490196f, 0.929411764705882f, 1f)),
    STEEL_BLUE(new Color(0.274509803921569f, 0.509803921568627f, 0.705882352941176f, 1f)),
    ROYAL_BLUE(new Color(0.254901960784314f, 0.411764705882353f, 0.882352941176471f, 1f)),
    BLUE(Color.BLUE),
    MEDIUM_BLUE(new Color(0f, 0f, 0.803921568627451f, 1f)),
    DARK_BLUE(new Color(0f, 0f, 0.545098039215686f, 1f)),
    NAVY(new Color(0f, 0f, 0.501960784313726f, 1f)),
    MIDNIGHT_BLUE(new Color(0.0980392156862745f, 0.0980392156862745f, 0.43921568627451f, 1f)),

    // Purple colors.
    LAVENDER(new Color(0.901960784313726f, 0.901960784313726f, 0.980392156862745f, 1f)),
    THISTLE(new Color(0.847058823529412f, 0.749019607843137f, 0.847058823529412f, 1f)),
    PLUM(new Color(0.866666666666667f, 0.627450980392157f, 0.866666666666667f, 1f)),
    VIOLET(new Color(0.933333333333333f, 0.509803921568627f, 0.933333333333333f, 1f)),
    ORCHID(new Color(0.854901960784314f, 0.43921568627451f, 0.83921568627451f, 1f)),
    FUCHSIA(Color.MAGENTA),
    MAGENTA(Color.MAGENTA),
    MEDIUM_ORCHID(new Color(0.729411764705882f, 0.333333333333333f, 0.827450980392157f, 1f)),
    MEDIUM_PURPLE(new Color(0.576470588235294f, 0.43921568627451f, 0.858823529411765f, 1f)),
    BLUE_VIOLET(new Color(0.541176470588235f, 0.168627450980392f, 0.886274509803921f, 1f)),
    DARK_VIOLET(new Color(0.580392156862745f, 0f, 0.827450980392157f, 1f)),
    DARK_ORCHID(new Color(0.6f, 0.196078431372549f, 0.8f, 1f)),
    DARK_MAGENTA(new Color(0.545098039215686f, 0f, 0.545098039215686f, 1f)),
    PURPLE(new Color(0.501960784313726f, 0f, 0.501960784313726f, 1f)),
    INDIGO(new Color(0.294117647058823f, 0f, 0.509803921568627f, 1f)),
    DARK_SLATE_BLUE(new Color(0.282352941176471f, 0.23921568627451f, 0.545098039215686f, 1f)),
    SLATE_BLUE(new Color(0.415686274509804f, 0.352941176470588f, 0.803921568627451f, 1f)),
    MEDIUM_SLATE_BLUE(new Color(0.482352941176471f, 0.407843137254902f, 0.933333333333333f, 1f)),

    // White-Black colors.
    WHITE(Color.WHITE),
    SNOW(new Color(1f, 0.980392156862745f, 0.980392156862745f, 1f)),
    HONEYDEW(new Color(0.941176470588235f, 1f, 0.941176470588235f, 1f)),
    MINT_CREAM(new Color(0.96078431372549f, 1f, 0.980392156862745f, 1f)),
    AZURE(new Color(0.941176470588235f, 1f, 1f, 1f)),
    ALICE_BLUE(new Color(0.941176470588235f, 0.972549019607843f, 1f, 1f)),
    GHOST_WHITE(new Color(0.972549019607843f, 0.972549019607843f, 1f, 1f)),
    WHITE_SMOKE(new Color(0.96078431372549f, 0.96078431372549f, 0.96078431372549f, 1f)),
    SEASHELL(new Color(1f, 0.96078431372549f, 0.933333333333333f, 1f)),
    BEIGE(new Color(0.96078431372549f, 0.96078431372549f, 0.862745098039216f, 1f)),
    OLD_LACE(new Color(0.992156862745098f, 0.96078431372549f, 0.901960784313726f, 1f)),
    FLORAL_WHITE(new Color(1f, 0.980392156862745f, 0.941176470588235f, 1f)),
    IVORY(new Color(1f, 1f, 0.941176470588235f, 1f)),
    ANTIQUE_WHITE(new Color(0.980392156862745f, 0.92156862745098f, 0.843137254901961f, 1f)),
    LINEN(new Color(0.980392156862745f, 0.941176470588235f, 0.901960784313726f, 1f)),
    LAVENDER_BLUSH(new Color(1f, 0.941176470588235f, 0.96078431372549f, 1f)),
    MISTY_ROSE(new Color(1f, 0.894117647058824f, 0.882352941176471f, 1f)),
    GAINSBORO(new Color(0.862745098039216f, 0.862745098039216f, 0.862745098039216f, 1f)),
    LIGHT_GRAY(new Color(0.827450980392157f, 0.827450980392157f, 0.827450980392157f, 1f)),
    SILVER(new Color(0.752941176470588f, 0.752941176470588f, 0.752941176470588f, 1f)),
    DARK_GRAY(new Color(0.662745098039216f, 0.662745098039216f, 0.662745098039216f, 1f)),
    GRAY(new Color(0.501960784313726f, 0.501960784313726f, 0.501960784313726f, 1f)),
    DIM_GRAY(new Color(0.411764705882353f, 0.411764705882353f, 0.411764705882353f, 1f)),
    LIGHT_SLATE_GRAY(new Color(0.466666666666667f, 0.533333333333333f, 0.6f, 1f)),
    SLATE_GRAY(new Color(0.43921568627451f, 0.501960784313726f, 0.564705882352941f, 1f)),
    DARK_SLATE_GRAY(new Color(0.184313725490196f, 0.309803921568627f, 0.309803921568627f, 1f)),
    BLACK(Color.BLACK);

    public static final WebColors[] PINK_COLORS = new WebColors[]{PINK, LIGHT_PINK, HOT_PINK, DEEP_PINK, PALE_VIOLET_RED, MEDIUM_VIOLET_RED};

    public static final WebColors[] RED_COLORS = new WebColors[]{LIGHT_SALMON, SALMON, DARK_SALMON, LIGHT_CORAL, INDIAN_RED, CRIMSON, FIRE_BRICK, DARK_RED, RED};

    public static final WebColors[] ORANGE_COLORS = new WebColors[]{ORANGE_RED, TOMATO, CORAL, DARK_ORANGE, ORANGE, GOLD};

    public static final WebColors[] YELLOW_COLORS = new WebColors[]{YELLOW, LIGHT_YELLOW, LEMON_CHIFFON, LIGHT_GOLDENROD_YELLOW,
            PAPAYA_WHIP, MOCCASIN, PEACH_PUFF, PALE_GOLDENROD, KHAKI, DARK_KHAKI};

    public static final WebColors[] BROWN_COLORS = new WebColors[]{CORNSILK, BLANCHED_ALMOND, BISQUE, NAVAJO_WHITE, WHEAT, BURLY_WOOD, TAN, ROSY_BROWN, SANDY_BROWN,
            GOLDENROD, DARK_GOLDENROD, PERU, CHOCOLATE, SADDLE_BROWN, SIENNA, BROWN, MAROON};

    public static final WebColors[] GREEN_COLORS = new WebColors[]{DARK_OLIVE_GREEN, OLIVE, OLIVE_DRAB, YELLOW_GREEN, LIME_GREEN, LIME, LAWN_GREEN, CHARTREUSE, GREEN_YELLOW,
            SPRING_GREEN, MEDIUM_SPRING_GREEN, LIGHT_GREEN, PALE_GREEN, DARK_SEA_GREEN, MEDIUM_SEA_GREEN, SEA_GREEN, FOREST_GREEN, GREEN, DARK_GREEN};

    public static final WebColors[] CYAN_COLORS = new WebColors[]{MEDIUM_AQUAMARINE, AQUA, CYAN, LIGHT_CYAN, PALE_TURQUOISE, AQUAMARINE, TURQUOISE, MEDIUM_TURQUOISE,
            DARK_TURQUOISE, DARK_TURQUOISE, LIGHT_SEA_GREEN, CADET_BLUE, DARK_CYAN, TEAL};

    public static final WebColors[] BLUE_COLORS = new WebColors[]{LIGHT_STEEL_BLUE, POWDER_BLUE, LIGHT_BLUE, SKY_BLUE, LIGHT_SKY_BLUE, DEEP_SKY_BLUE, DODGER_BLUE,
            CORNFLOWER_BLUE, STEEL_BLUE, ROYAL_BLUE, BLUE, MEDIUM_BLUE, DARK_BLUE, NAVY, MIDNIGHT_BLUE};

    public static final WebColors[] PURPLE_COLORS = new WebColors[]{LAVENDER, THISTLE, PLUM, VIOLET, ORCHID, FUCHSIA, MAGENTA, MEDIUM_ORCHID, MEDIUM_PURPLE, BLUE_VIOLET,
            DARK_VIOLET, DARK_ORCHID, DARK_MAGENTA, PURPLE, INDIGO, DARK_SLATE_BLUE, SLATE_BLUE, MEDIUM_SLATE_BLUE};

    public static final WebColors[] GRAYSCALE_COLORS = new WebColors[]{WHITE, SNOW, HONEYDEW, MINT_CREAM, AZURE, ALICE_BLUE, GHOST_WHITE, WHITE_SMOKE, SEASHELL, BEIGE,
            OLD_LACE, FLORAL_WHITE, IVORY, ANTIQUE_WHITE, LINEN, LAVENDER_BLUSH, MISTY_ROSE, GAINSBORO, LIGHT_GRAY, SILVER, DARK_GRAY, GRAY, DIM_GRAY, LIGHT_SLATE_GRAY,
            SLATE_GRAY, DARK_SLATE_GRAY, BLACK};

    private final Color color;

    public Color get() {
        return this.color;
    }

    WebColors(Color color) {
        this.color = color;
    }
}